﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataLayer.EF;
using EntityLayer;

namespace DataLayer.CLASES_DAO
{
    public class clsT_ProductoDAO
    {
        private BD_GESTIONVISITAEntities ContextoDeObjs = new BD_GESTIONVISITAEntities();
        public Boolean Insertar(T_Producto obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_Producto", obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                throw;
            }
        }
        public Boolean Modificar(T_Producto obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_Producto", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                throw;
            }
        }
        public Boolean Eliminar(T_Producto obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_Producto", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                throw;
            }
        }
        public List<T_Producto> listar(int? co_producto = null)
        {
            List<T_Producto> lista = new List<T_Producto>();
            try
            {
                var q = from c in ContextoDeObjs.T_Producto
                        select c;
                if (co_producto != null) q = q.Where(f1 => f1.co_producto == co_producto);
                lista = q.ToList();
            }
            catch (Exception)
            {
                lista = null;
                throw;
            }
            return lista;
        }
        public List<T_Producto> listarxServicio(int co_servicio)
        {
            List<T_Producto> lista = new List<T_Producto>();
            try
            {
                var q = from s in ContextoDeObjs.T_Servicio
                        join ss in ContextoDeObjs.T_SubServicio
                            on s.co_servicio equals ss.co_servicio
                        join p in ContextoDeObjs.T_Producto
                            on ss.co_subservicio equals p.co_subservicio
                        where s.co_servicio == co_servicio
                        orderby p.no_producto
                        select p;

                lista = q.ToList();
            }
            catch (Exception)
            {
                lista = null;
                throw;
            }
            return lista;
        }
    }
}
